{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 3,
   "id": "4e7f7422-c70d-4111-ba83-2b2431f6e49a",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[[34. 78.]\n",
      " [55. 86.]\n",
      " [58. 67.]\n",
      " [34. 65.]\n",
      " [67. 50.]\n",
      " [89. 44.]\n",
      " [65. 33.]\n",
      " [56. 45.]\n",
      " [78. 55.]\n",
      " [76. 56.]\n",
      " [58. 64.]\n",
      " [33. 66.]\n",
      " [45. 55.]\n",
      " [78. 45.]\n",
      " [58. 62.]\n",
      " [56. 90.]\n",
      " [56. 78.]\n",
      " [58. 57.]\n",
      " [67. 33.]\n",
      " [56. 56.]\n",
      " [58. 89.]\n",
      " [45. 55.]\n",
      " [67. 22.]\n",
      " [44. 55.]\n",
      " [67. 33.]\n",
      " [66. 45.]\n",
      " [33. 56.]\n",
      " [55. 67.]\n",
      " [38. 78.]\n",
      " [56. 67.]\n",
      " [46. 47.]\n",
      " [67. 46.]\n",
      " [89. 30.]\n",
      " [67. 55.]\n",
      " [67. 48.]\n",
      " [35. 80.]\n",
      " [61. 59.]\n",
      " [57. 46.]\n",
      " [67. 46.]\n",
      " [39. 46.]\n",
      " [67. 44.]\n",
      " [57. 49.]\n",
      " [78. 56.]\n",
      " [48. 55.]\n",
      " [56. 89.]\n",
      " [78. 54.]\n",
      " [67. 56.]\n",
      " [58. 59.]\n",
      " [56. 60.]\n",
      " [58. 65.]\n",
      " [90. 78.]\n",
      " [67. 73.]\n",
      " [80. 69.]\n",
      " [78. 73.]\n",
      " [89. 60.]\n",
      " [76. 61.]\n",
      " [64. 67.]\n",
      " [63. 73.]\n",
      " [82. 63.]\n",
      " [93. 74.]\n",
      " [76. 78.]\n",
      " [64. 83.]\n",
      " [68. 75.]\n",
      " [89. 76.]\n",
      " [96. 90.]\n",
      " [97. 94.]\n",
      " [90. 88.]\n",
      " [66. 74.]\n",
      " [77. 80.]\n",
      " [83. 85.]\n",
      " [85. 81.]\n",
      " [87. 80.]\n",
      " [88. 90.]\n",
      " [66. 64.]\n",
      " [67. 78.]\n",
      " [88. 94.]\n",
      " [77. 73.]\n",
      " [65. 66.]\n",
      " [90. 98.]\n",
      " [96. 83.]\n",
      " [97. 84.]\n",
      " [98. 73.]\n",
      " [99. 66.]\n",
      " [99. 98.]\n",
      " [88. 76.]\n",
      " [67. 84.]\n",
      " [88. 93.]\n",
      " [76. 62.]\n",
      " [88. 60.]\n",
      " [89. 71.]\n",
      " [73. 72.]\n",
      " [63. 75.]\n",
      " [79. 85.]\n",
      " [68. 75.]\n",
      " [66. 90.]\n",
      " [78. 94.]\n",
      " [70. 66.]\n",
      " [65. 65.]\n",
      " [73. 98.]\n",
      " [93. 60.]]\n",
      "[[34.]\n",
      " [55.]\n",
      " [58.]\n",
      " [34.]\n",
      " [67.]\n",
      " [89.]\n",
      " [65.]\n",
      " [56.]\n",
      " [78.]\n",
      " [76.]\n",
      " [58.]\n",
      " [33.]\n",
      " [45.]\n",
      " [78.]\n",
      " [58.]\n",
      " [56.]\n",
      " [56.]\n",
      " [58.]\n",
      " [67.]\n",
      " [56.]\n",
      " [58.]\n",
      " [45.]\n",
      " [67.]\n",
      " [44.]\n",
      " [67.]\n",
      " [66.]\n",
      " [33.]\n",
      " [55.]\n",
      " [38.]\n",
      " [56.]\n",
      " [46.]\n",
      " [67.]\n",
      " [89.]\n",
      " [67.]\n",
      " [67.]\n",
      " [35.]\n",
      " [61.]\n",
      " [57.]\n",
      " [67.]\n",
      " [39.]\n",
      " [67.]\n",
      " [57.]\n",
      " [78.]\n",
      " [48.]\n",
      " [56.]\n",
      " [78.]\n",
      " [67.]\n",
      " [58.]\n",
      " [56.]\n",
      " [58.]\n",
      " [90.]\n",
      " [67.]\n",
      " [80.]\n",
      " [78.]\n",
      " [89.]\n",
      " [76.]\n",
      " [64.]\n",
      " [63.]\n",
      " [82.]\n",
      " [93.]\n",
      " [76.]\n",
      " [64.]\n",
      " [68.]\n",
      " [89.]\n",
      " [96.]\n",
      " [97.]\n",
      " [90.]\n",
      " [66.]\n",
      " [77.]\n",
      " [83.]\n",
      " [85.]\n",
      " [87.]\n",
      " [88.]\n",
      " [66.]\n",
      " [67.]\n",
      " [88.]\n",
      " [77.]\n",
      " [65.]\n",
      " [90.]\n",
      " [96.]\n",
      " [97.]\n",
      " [98.]\n",
      " [99.]\n",
      " [99.]\n",
      " [88.]\n",
      " [67.]\n",
      " [88.]\n",
      " [76.]\n",
      " [88.]\n",
      " [89.]\n",
      " [73.]\n",
      " [63.]\n",
      " [79.]\n",
      " [68.]\n",
      " [66.]\n",
      " [78.]\n",
      " [70.]\n",
      " [65.]\n",
      " [73.]\n",
      " [93.]]\n"
     ]
    }
   ],
   "source": [
    "import numpy as np\n",
    "raw_df=np.loadtxt('logi-y.txt',delimiter=',',encoding='utf-8')\n",
    "data=raw_df[:,0:2]\n",
    "target=raw_df[:,0:1]\n",
    "#print(raw_df)\n",
    "print(data)\n",
    "print(target)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "id": "ccec897f-799c-48a6-8956-7d912be79be7",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "0.98\n"
     ]
    },
    {
     "data": {
      "image/png": "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2dnZLKgHwHc86SHVo4d/zl1dP6ji4rLv77vPs1rdKSmR/vvfytvrcH1m3aoCgolX6+AMHz5cCQkJSklJ0X333afTp09r8ODBkqT58+dr5MiRmjBhgrZ609MFAKrjyx5S3qqpH9SF31dXa23U4fruO0yrGoQ3j2dwDMNQdHS0cnNztWfPHi1btkz//e9/9fLLL+vgwYNyOp2aOnWqsrKyZLfb/VkzgHBiZg+pmsLKhd/7oxYze2QBIcyjGZyTJ0+qS5cu+te//qUGDRpo8eLFevTRR1WvXj398pe/1KOPPqqXX35ZXbp00dq1a3XDDTf4u24A4aKmHlH+7CF14crDNX3vj1rqcExmcRDOPAo4jRo10vz583XHHXeouLhY9957r7Zv367GjRvryy+/1IwZMzRq1Ch99NFHOnbsmG688UZ/1w0gXHTs6D5oeNtDylvNm3v3fXW11oa/rw+wMI9vUV111VU6ceKEBg8erHbt2ikuLk5t27aVVNZcs127drr00kv1+OOP68SJE34rGECYSUsre5vowod3a9NDyluDBlV+i6pcZGTZ957W6u52V0RE5beoyvfxwfXxwDHClVcPGV9//fXq3Lmz4uLiJEldu3aVJF1xxRX6+c9/rs2bN+vSSy/VihUrfF8pgPBU3kOqZ08pMbHsF39iYtlnf79CXd4PKjX1p5kZm63s84WviNdU65gxVR9n3DjpgQf8en3+vFXlaX8r+mAh0DzqRVWuefPmOvy/twbWrl2rMWPGaOvWrYr/X28nwzBc2/ft2+eXgmuLXlQIdvSigj/5cxaHlYzhT37tRVWuXr2fJny6d++ua665RnfeeadrxsZms6lPnz4qLCz05rAAAD/z560qwguCkUe3qIqLi7Vr1y4VFRUpKytL586dU0xMjBYvXqzi4mI999xzFcbbfPmQHQDAJ3irCuHEoxmckydP6qabblJubq569OihpUuXauXKlYqMjNSVV16pxx57TKdPn1ZUVJSys7NVv359f9cNAADglkcBp0mTJsrJyVFqaqoOHToku92ujz76SBEREbr00ks1ZMgQ/e1vf9O4cePUuHFjzZ492991Awh2gWiQeeqUtGCBdPr0T9uSk8vebsrIqNzYsk8fac2aqhteSlU31ezXT9q9u/J1dOggff2159sD0RjUA7xVhXDh1UPGLVq00MGDByttNwxD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sWKF61mbY8eOaenSpbLb7frnP/+pdevWqWHDhpKkli1bateuXa6wYRiGnE5ntTXccMMNSklJ0Zw5c9yOOXHihC6//HI9+uijuvbaa/XJJ59o8+bNrp+MjAxNmzatjn8aAAKJgAPAb1q0aKFvv/1WvXv3llR2O2rBggXq0KGD3n//fY0fP15TpkypcOsnPz9f//nPf5SXl6e9e/fqyy+/1FVXXSVJ+tnPfqZt27bpT3/6kxYtWqRp06bpt7/9bbU15OXlafbs2XriiSe0bt26KsccOHBATZs21dNPP62srCwlJyfrueee0/bt2/X3v/9dhYWFeuSRR3z0pwIgEAg4APwqISHB9fcRERH6+uuvNX36dI0bN67Ca9elpaXatGmTrrrqKo0cOVIpKSmaPn26CgoKdP3118swDD355JO68sordc8992jo0KF66qmntGLFCrfnXrp0qVq2bKnCwkLNmDFD/fv315tvvllhjMPh0M6dO9WxY0dJUmRkpBYsWKCHHnpIL774ou666y4tWbJEF198sY//ZAD4EwEHQECUlpaqtLRUs2fP1qBBgyRJ2dnZMgxDkvTvf/9bN998s/Lz8/X8889r2LBh2rNnjxwOh3744QetXbtWixYtUteuXTVx4kSVlpa6PdfJkyf1wQcf6P7779fEiRPVtWtXjRkzRi+88IL+9Kc/KS0tTZs3b5Ykvfnmm/rVr36lBg0aSCpb4O/QoUO64oorNH78eDVq1Ej79u3Tf/7zH/3444+uegEENwIOgIAof0273K9+9St9/vnnSk1NVfPmzfWHP/xBTz31lLKzs/X5559r9OjRstvteuKJJ9S6dWtlZGRo06ZNGjlypF588UUVFha6ff7myJEjat++vf7zn//okUcecc0U/f73v3fN1lx77bWSyt6SGjt2rN5//321adNG1113nZYsWaKpU6cqLy9P6enp+uyzzzR06FA1btxYY8eO9f8fFoA6sxn85wgAi3E4HIqJianUwqE65W9glT/QXJWioiKVlJRUeOUcQHAi4AAAAMvhFhUAALAcAg4AALAcAg4AALAcAg4AALAcAg4AALAcAg4AALAcAg4AALAcAg4AALCc/w8aWrdi79dwIAAAAABJRU5ErkJggg==",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "from sklearn.datasets import load_iris\n",
    "from sklearn.model_selection import train_test_split\n",
    "x,y = load_iris().data[:,2:4],load_iris().target\n",
    "x_train,x_test,y_train,y_test = train_test_split(x,y,random_state=1,test_size=50)\n",
    "from sklearn.linear_model import LogisticRegression\n",
    "from sklearn.metrics import accuracy_score\n",
    "model = LogisticRegression()\n",
    "model.fit(x_train,y_train)\n",
    "ac = accuracy_score(y_test,model.predict(x_test))\n",
    "print(ac)\n",
    "0.98\n",
    "import matplotlib.pyplot as plt\n",
    "from matplotlib.colors import ListedColormap\n",
    "import numpy as np\n",
    "N,M = 500,500\n",
    "t1 = np.linspace(0,8,N)\n",
    "t2 = np.linspace(0,3,M)\n",
    "x1,x2 = np.meshgrid(t1,t2)\n",
    "x_new = np.stack((x1.flat,x2.flat),axis=1)\n",
    "y_predict = model.predict(x_new)\n",
    "y_hat = y_predict.reshape(x1.shape)\n",
    "iris_cmap = ListedColormap(['#ACC6C0','#FF8080','#A0A0FF'])\n",
    "plt.pcolormesh(x1,x2,y_hat,cmap=iris_cmap)\n",
    "plt.scatter(x[y==0,0],x[y==0,1],s=30,c='g',marker='^')\n",
    "plt.scatter(x[y==1,0],x[y==1,1],s=30,c='r',marker='o')\n",
    "plt.scatter(x[y==2,0],x[y==2,1],s=30,c='b',marker='s')\n",
    "plt.rcParams['font.sans-serif']='SimHei'\n",
    "plt.xlabel('花瓣长度')\n",
    "plt.ylabel('花瓣宽度')\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "536717fc-18c7-4c5c-a946-2519499c19d4",
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3 (ipykernel)",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.13.5"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
